home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / ucthesis / ucthesis.cls < prev    next >
Text File  |  1995-03-09  |  45KB  |  1,277 lines

  1. % UCTHESIS DOCUMENT CLASS -- Release info is below.
  2. %    for LaTeX version 2e - 11/3/94
  3.  
  4. %%% ====================================================================
  5. %%%  @LaTeX-class-file{
  6. %%%     filename        = "ucthesis.cls",
  7. %%%     version         = "3.0",
  8. %%%     date            = "31 October 1994",
  9. %%%    portedby    = "Blaise B. Frederick",
  10. %%%    address        = "Center for Functional Imaging
  11. %%%               Lawrence Berkeley Laboratory
  12. %%%               MS 55-121
  13. %%%               1 Cyclotron Rd.
  14. %%%               Berkeley, CA 94720
  15. %%%               USA",
  16. %%%    telephone    = "(510) 486-4423",
  17. %%%    email        = "frederic@imasun.lbl.gov",
  18. %%%     codetable       = "ISO/ASCII",
  19. %%%     keywords        = "LaTeX, ucthesis",
  20. %%%     supported       = "until November 30, 1994",
  21. %%%     docstring       = "This file is the main file for the ucthesis
  22. %%%                        class, which is intended to meet the requirements
  23. %%%                        for University of California Ph.D. dissertations.
  24. %%%               It is a direct port to LaTeX2e from UCTHESIS
  25. %%%               v2.7 by Ethan V. Munson, with no changes other 
  26. %%%               than those for compatibility.  The major modifictions
  27. %%%               are in the font selection commands in the option
  28. %%%               files uct1x.clo.
  29. %%%               
  30. %%%               UCTHESIS.STY v2.7 is based on the standard
  31. %%%               report.sty as modified by Mittelbach and Schopf in
  32. %%%               Jan 1992.  The primary differences are (1) the use
  33. %%%               of pseudo-double-spacing, except in certain special
  34. %%%                        environments; and (2) the use of a 6 inch line
  35. %%%                        with 4em paragraph indentation.  It is only
  36. %%%               intended for single-sided printing.  Double-sided
  37. %%%               printing may be possible, but you're on
  38. %%%               your own.
  39. %%%
  40. %%%                        I know of no bugs in this implementation,
  41. %%%                        but would be happy to hear of any problems
  42. %%%                        that arise with it.
  43. %%%
  44. %%%               Version 2.x fixes a bug in the previous
  45. %%%               version of 20 Jun 1988.  The bug was that 
  46. %%%               "draft" optional mode didn't work because of
  47. %%%               problems in handling optional arguments.
  48. %%%                        This file does not seem to work with earlier 
  49. %%%                        versions of LaTeX (pre-Jan 1992).
  50. %%%
  51. %%%               Version 2.3 includes a single-spaced 
  52. %%%               tabular* environment.
  53. %%%            
  54. %%%               Version 2.4 sets \evensidemargin correctly
  55. %%%               for two-sided style.  It also adds new
  56. %%%               environments (\smalltabular and
  57. %%%               \scriptsizetabular) which produce tables
  58. %%%               with smaller fonts.  The obvious methods
  59. %%%               of producing small-font tables don't work
  60. %%%               in ucthesis style.
  61. %%%
  62. %%%               Version 2.5 adds support for the \maketitle
  63. %%%               macro.
  64. %%%
  65. %%%               Version 2.6 adds support for complete and
  66. %%%               correct front matter.  Some dead code was
  67. %%%               removed, too.
  68. %%%
  69. %%%                        Version 2.7 adds front matter support for
  70. %%%                        thesis committees of more than 3 people
  71. %%%                        and for a labeled signature line on the
  72. %%%                        abstract page.
  73. %%%
  74. %%%               Version 3.0 is a direct port of version 2.7
  75. %%%               to LaTeX2e.  The major revisions in ucthesis.cls
  76. %%%               are converting option processing to LaTeX2e 
  77. %%%               conventions.  The uct1x files have been revised
  78. %%%               to use the new font selection commands.
  79. %%%
  80. %%%               Some users have had problems with the 
  81. %%%               margins ending up too small on one side.
  82. %%%               This appears to be a DVI-to-PostScript
  83. %%%               driver or printer-adjustment problem.
  84. %%%               If you have such trouble, make small adjustments
  85. %%%               to the \textwidth and \oddsidemargin
  86. %%%               settings in your document preamble.
  87. %%%               
  88. %%%               Another problem some people have had is
  89. %%%               that you can't use \pagestyle{headings}
  90. %%%               and \markboth if you use \part.  The solution
  91. %%%               is to get the headerfooter style, which is
  92. %%%               nice and simple to use."
  93. %%%  }
  94. %%% ====================================================================
  95.  
  96. \NeedsTeXFormat{LaTeX2e}
  97. \ProvidesClass{ucthesis}[1994/10/31 v3.0 University of California Thesis Class]
  98.  
  99. %    ****************************************
  100. %    *               OPTIONS                *
  101. %    ****************************************
  102. %
  103. % Option values are now declared first thing.  Defaults are set to
  104. % 11 point, onesided, final (ie not draft) mode (BBF 10/31/94)
  105. \newcommand\@ptsize{}
  106. \newcommand\@draftmark{}
  107. \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
  108. \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
  109. \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
  110. \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
  111. \DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
  112. \DeclareOption{draft}{\renewcommand\@draftmark{1}}
  113. \DeclareOption{final}{\renewcommand\@draftmark{0}}
  114. \ExecuteOptions{11pt,oneside,final}
  115.  
  116.  
  117. % CHOOSING THE TYPE SIZE:
  118. %
  119. %  The type size option is handled by reading a different file for each
  120. %  size, as follows, to define font size-specific commands:
  121. %       10pt : UCT10, 11pt : UCT11, 12pt : UCT12
  122. %
  123.  
  124. %  Two-side or one-side printing.
  125. %
  126. % \@twosidefalse               %  Default is one-sided printing.
  127. \def\ds@twoside{\@twosidetrue  %  Defines twoside option.
  128.            \@mparswitchtrue}   %    Marginpars go on outside of page.
  129.  
  130. % This is a tricky solution to a tough bootstrapping problem.  The
  131. % "draft" option requires the definition of the \ssp macro.  However,
  132. % the \ssp macro requires that the uct1?.clo file has been loaded.  This
  133. % loading is done by the \@options command which also invokes the
  134. % \ds@draft macro.  This was a cyclic dependency in the previous
  135. % version.  To break this dependency, I have made \ds@draft set a marker
  136. % which is later tested to determine whether to actually do the draft
  137. % mode actions.
  138. % Ethan Munson (October 16, 1992)
  139.  
  140. % FMi 91/03/30: made twocolum.sty a file and twocolumn an option.
  141.  
  142. % RmS 91/10/15: moved actual reading of twocolumn.sty
  143. %               to the end of this file.
  144. \def\ds@twocolumn{\@twocolumntrue}
  145.  
  146. % The \ProcessOptions command causes the execution of every option command
  147. % FOO which is declared and for which the user typed the FOO option in his
  148. % \documentclass.  For every undeclared option BAR there will be a warning 
  149. % message. (BBF 10/31/94)
  150.  
  151. \ProcessOptions
  152.  
  153. \input uct1\@ptsize.clo\relax
  154.  
  155. % For some environments we switch back to single-spacing, also
  156. % provides \dsp in case you need double-spacing where single-spacing
  157. % is otherwise used.
  158. \def\ssp{\def\baselinestretch{1.0}\large\normalsize}
  159. \def\dsp{\def\baselinestretch{1.37}\large\normalsize}
  160.  
  161. % \smallssp is used to produce tabular environments in the small font.
  162. % This is required because single-spacing requires a change in font size.
  163. % \scriptsizessp is a still smaller version of the same thing.
  164.  
  165. \def\smallssp{\def\baselinestretch{1.0}\large\small}
  166. \def\scriptsizessp{\def\baselinestretch{1.0}\large\scriptsize}
  167.  
  168. %  draft option (this is where the draft option is actually implemented)
  169. %
  170. % \overfullrule = 0pt             % Default is don't mark overfull hboxes.
  171. \ifnum \@draftmark = 1
  172. \ssp                  % Single-spaces and
  173. \overfullrule 5pt          % causes overfull hboxes to be marked.
  174. \fi
  175.  
  176.  
  177. % PREPARING A FOREIGN LANGUAGE VERSION:
  178. %
  179. % This document style is for documents prepared in the English language.
  180. % To prepare a version for another language, various English words must
  181. % be replaced.  Many of the English words that required replacement are
  182. % indicated below, where we give the name of the command in which the
  183. % words appear, and which must be redefined, with the actual words
  184. % underlined.
  185. %
  186. % Other English words that need replacement can be found in the macros
  187. % supporting the title and approval pages.
  188. %
  189. % \tableofcontents:
  190. \def\contentsname{Contents}
  191. %                 ~~~~~~~~
  192. %
  193. % \listoffigures:
  194. \def\listfigurename{List of Figures}
  195. %                   ~~~~~~~~~~~~~~~
  196. %
  197. % \listoftables:
  198. \def\listtablename{List of Tables}
  199. %                  ~~~~~~~~~~~~~~
  200. %
  201. % \thebibliography:
  202. \def\bibname{Bibliography}
  203. %            ~~~~~~~~~~~~
  204. %
  205. % \theindex:
  206. \def\indexname{Index}
  207. %              ~~~~~
  208. %
  209. % figure environment:
  210. \def\figurename{Figure}
  211. %               ~~~~~~
  212. %
  213. % table environment:
  214. \def\tablename{Table}
  215. %              ~~~~~
  216. %
  217. % \chapter:
  218. \def\chaptername{Chapter}
  219. %                ~~~~~~~
  220. % \appendix:
  221. \def\appendixname{Appendix}
  222. %                 ~~~~~~~~
  223. % \part
  224. \def\partname{Part}
  225. %             ~~~~
  226. % abstract environment:
  227. \def\abstractname{Abstract}
  228. %                 ~~~~~~~~
  229. %
  230. % acknowledge environment:
  231. \def\acknowledgename{Acknowledgements}
  232. %                    ~~~~~~~~~~~~~~~~
  233.  
  234. %    ****************************************
  235. %    *             FRONT MATTER             *
  236. %    ****************************************
  237. %
  238.  
  239. % DECLARATIONS
  240. %
  241. % These macros are used to declare arguments needed for the
  242. % construction of the front matter.  
  243.  
  244. % The year the degree will be officially conferred
  245. \def\degreeyear#1{\gdef\@degreeyear{#1}}
  246.  
  247. % The full (unabbreviated) name of the degree
  248. \def\degree#1{\gdef\@degree{#1}}
  249.  
  250. % All previous degrees: one per line in chronological order
  251. \def\prevdegrees#1{\gdef\@prevdegrees{#1}}
  252.  
  253. % The name of your committee's chair
  254. \def\chair#1{\gdef\@chair{#1}}
  255.  
  256. % The names of your other committe members, one per line
  257. \def\othermembers#1{\gdef\@othermembers{#1}}
  258.  
  259. % The number of committee members, which affects both the
  260. % number of lines and the amount of space between lines
  261. % on the approval page.
  262. \def\@numberofmembers{3}
  263. \def\@approvalspace{.75in}
  264. \def\numberofmembers#1{\gdef\@numberofmembers{#1}
  265. \ifnum \@numberofmembers > 3
  266. \gdef\@approvalspace{.5in}
  267. \fi}
  268.  
  269. % The name of your degree's field (e.g. Psychology, Computer Science)
  270. \def\field#1{\gdef\@field{#1}}
  271.  
  272. % You have to define the campus name twice because I can't figure out
  273. % how to get the TeX \uppercase macro to work for me (EVM, 9/21/94)
  274.  
  275. % The name of your UC Campus CAPITALIZED (e.g. Berkeley, Los Angeles)
  276. \def\campus#1{\gdef\@campus{#1}}
  277.  
  278. % \alwayssingle and \endalwayssingle
  279. %
  280. % These macros define an environment for front matter that is always 
  281. % single column even in a double-column document.
  282.  
  283. \def\alwayssingle{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
  284.      \else \newpage \fi}
  285.  
  286. \def\endalwayssingle{\if@restonecol\twocolumn \else \newpage \fi}
  287.  
  288. % \maketitle outputs the complete titlepage.  It requires all the
  289. % above macros except \campuscap.  It is probably not correct for 
  290. % joint (e.g. UCSD/SDSU) degrees.
  291.  
  292. % Set the font that will be used in the front matter headings
  293. \def\fmfont{\fontsize\@xiipt{14.5}\selectfont}
  294. \def\fmsmallfont{\fontsize\@xiipt{14pt}\selectfont}
  295.  
  296. \def\maketitle{
  297. {\ssp
  298. \begin{alwayssingle}
  299.     \let\footnotesize\small
  300.     \let\footnoterule\relax
  301.     \thispagestyle{empty}
  302.     \setcounter{page}{1}
  303.  
  304.     \null\vfil
  305.   \begin{center}
  306.     \fmfont
  307.     {\bfseries {\@title} \par}
  308.     \bigskip \medskip
  309.     by \par
  310.     \bigskip \medskip
  311.     {\@author} \par
  312. \vspace{6ex}
  313.     {\@prevdegrees} \par
  314. \vspace{6ex}
  315.     A dissertation submitted in partial satisfaction of the \par
  316. \smallskip
  317.     requirements for the degree of \par
  318. \smallskip
  319.     {\@degree} \par
  320.     \bigskip \medskip
  321.     in \par
  322.     \bigskip \medskip
  323.     {\@field}\par
  324.     \bigskip \medskip
  325.     in the \par
  326.     \bigskip \medskip
  327.     GRADUATE DIVISION \par
  328. \smallskip
  329.     of the \par
  330. \smallskip
  331.     UNIVERSITY of CALIFORNIA at {\expandafter\uppercase\expandafter{\@campus}}
  332.   \end{center}
  333. {
  334. \vspace{6ex}
  335. \fmsmallfont
  336.   Committee in charge:
  337. \begin{quote}
  338. {\@chair}, Chair\newline
  339. {\@othermembers}
  340. \end{quote}
  341.   \begin{center}
  342.     {\@degreeyear}
  343.   \end{center}
  344. }
  345.     \vfil\null
  346. \end{alwayssingle}
  347.  
  348. \setcounter{footnote}{0}
  349. }}
  350.  
  351. % APPROVALPAGE
  352. %
  353. % The \approvalpage macro emits a UC-approved approval page ready for
  354. % your committee's signature.  It is not an automatic part of the 
  355. % output because there's really no point in printing it until you are
  356. % ready to get signatures.  It requires the the \year, \author, and
  357. % \campus macros have been defined.  It uses lots of tricky spacing
  358. % that is probably better handled with tabular environment code, but
  359. % I'm too lazy to fix it. (EVM, 9/19/94)
  360.  
  361. \def\approvalpage{
  362. \begin{alwayssingle}
  363. \thispagestyle{empty}
  364. \null\vfill
  365. \begin{center}
  366. \fmfont The dissertation of {\@author} is approved: \\
  367. \vspace{.25in}
  368. \vspace{\@approvalspace}
  369. $\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small Chair%
  370. \hspace{3.15in} Date }}\:$ \\
  371. \vspace{\@approvalspace}
  372. $\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
  373. \vspace{\@approvalspace}
  374. $\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
  375. \vspace{\@approvalspace}
  376. \ifnum \@numberofmembers > 3
  377. $\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
  378. \vspace{\@approvalspace}
  379. \fi
  380. \ifnum \@numberofmembers > 4
  381. $\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
  382. \vspace{\@approvalspace}
  383. \fi
  384. \ifnum \@numberofmembers > 5
  385. $\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
  386. \vspace{\@approvalspace}
  387. \fi
  388. {\fmfont University of California at {\@campus}} \\
  389. \vspace{-.25in}
  390. \vspace{\@approvalspace}
  391. {\fmfont \@degreeyear}
  392. \end{center}
  393. \vfill\null
  394. \end{alwayssingle}
  395. }
  396.  
  397. % COPYRIGHTPAGE
  398. %
  399. % While it's technically optional, you probably want a copyright page.
  400. % This is a macro, not an environment, because it can be generated
  401. % with the \title, \author, and \year macros.
  402.  
  403. \def\copyrightpage{
  404. \begin{alwayssingle}
  405. \thispagestyle{empty}
  406. \begin{center}
  407. {\fmfont
  408. {\bfseries\@title}\par
  409. \vspace{1in}
  410. Copyright \@degreeyear\par
  411. by\par
  412. \@author}
  413. \end{center}
  414. \end{alwayssingle}}
  415.  
  416. % ABSTRACT
  417. %
  418. % The ABSTRACT environment allows for multi-page abstracts which,
  419. % in accordance with UC rules, is numbered separately from the rest
  420. % of the rest of the dissertation in Arabic.  It requires definition
  421. % of the \title, \author, \degree, \field, \campus, and \chair macros.
  422.  
  423.  
  424. \def\abstract{
  425. \begin{alwayssingle}
  426. \pagestyle{plain}
  427. \thispagestyle{plain}
  428. \setcounter{page}{1}
  429. \begin{center}
  430. {\fmfont
  431. {\bfseries \abstractname}\par
  432. \vspace{.5in}
  433. \@title\par
  434. \vspace{.1in}
  435. by\par
  436. \vspace{.1in}
  437. \@author\par
  438. {\@degree} in \@field\par
  439. \vspace{.1in}
  440. University of California at {\@campus}\par
  441. \vspace{.1in}
  442. {\@chair}, Chair}
  443. \vspace{.1in}
  444. \end{center}}
  445.  
  446. \def\endabstract{\par\vfil\null\end{alwayssingle}
  447. }
  448.  
  449. \def\abstractsignature{
  450. \hspace*{\fill}
  451. \begin{minipage}[t]{3.25in}
  452. \addtolength{\baselineskip}{-.5\baselineskip}
  453. \vspace{1.7cm}
  454. \rule{3.2in}{.5pt}\\
  455. \@chair\\
  456. Dissertation Committee Chair
  457. \end{minipage}}
  458.  
  459. % DEDICATION
  460. %
  461. % The dedication environment just makes sure the dedication gets its
  462. % own page.
  463.  
  464. \newenvironment{dedication}
  465. {\begin{alwayssingle}}
  466. {\end{alwayssingle}}
  467.  
  468. % ACKNOWLEDGEMENTS
  469. %
  470. % The acknowledgements environment puts a large, bold, centered 
  471. % "Acknowledgements" label at the top of the page.
  472.  
  473. \newenvironment{acknowledgements}
  474. {\begin{alwayssingle}
  475. \begin{center}
  476. {\large \bfseries \acknowledgename}
  477. \end{center}
  478. }
  479. {\end{alwayssingle}}
  480.  
  481. % FRONTMATTER environment
  482. %
  483. % The FRONTMATTER environment makes sure that page numbering is set
  484. % correctly (roman, lower-case, starting at 3) for the front matter
  485. % that follows the abstract.  It also resets page-numbering for
  486. % the remainder of the dissertation (arabic, starting at 1).
  487.  
  488. \newenvironment{frontmatter}
  489. {\setcounter{page}{3}\renewcommand{\thepage}{\roman{page}}}
  490. {\newpage\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}}
  491.  
  492.  
  493. %    ****************************************
  494. %    *                LISTS                 *
  495. %    ****************************************
  496. %
  497.  
  498. % ENUMERATE
  499. %  Enumeration is done with four counters: enumi, enumii, enumiii
  500. %  and enumiv, where enumN controls the numbering of the Nth level
  501. %  enumeration.  The label is generated by the commands \labelenumi
  502. %  ... \labelenumiv.  The expansion of \p@enumN\theenumN defines the
  503. %  output of a \ref command.
  504. %
  505. % 16 Mar 88 -- changed defs of \labelenum... to use \theenum...
  506.  
  507. \def\labelenumi{\theenumi.}
  508. \def\theenumi{\arabic{enumi}}
  509.  
  510. \def\labelenumii{(\theenumii)}
  511. \def\theenumii{\alph{enumii}}
  512. \def\p@enumii{\theenumi}
  513.  
  514. \def\labelenumiii{\theenumiii.}
  515. \def\theenumiii{\roman{enumiii}}
  516. \def\p@enumiii{\theenumi(\theenumii)}
  517.  
  518. \def\labelenumiv{\theenumiv.}
  519. \def\theenumiv{\Alph{enumiv}}
  520. \def\p@enumiv{\p@enumiii\theenumiii}
  521.  
  522. % ITEMIZE
  523. % Itemization is controlled by four commands: \labelitemi, \labelitemii,
  524. % \labelitemiii, and \labelitemiv, which define the labels of the
  525. % various itemization levels.
  526.  
  527. \def\labelitemi{$\m@th\bullet$}
  528. \def\labelitemii{\bfseries --}
  529. \def\labelitemiii{$\m@th\ast$}
  530. \def\labelitemiv{$\m@th\cdot$}
  531.  
  532.  
  533. % VERSE
  534. %   The verse environment is defined by making clever use of the
  535. %   list environment's parameters.  The user types \\ to end a line.
  536. %   This is implemented by \let'in \\ equal \@centercr.
  537. %
  538. \def\verse{\par\let\\=\@centercr
  539.   \list{}{\ssp\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
  540.           \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
  541. \let\endverse\endlist
  542.  
  543. % QUOTATION
  544. %   Fills lines
  545. %   Indents paragraph
  546. %
  547. \def\quotation{\par\list{}{\ssp\listparindent 1.5em
  548.     \itemindent\listparindent
  549.     \rightmargin\leftmargin\parsep \z@ plus\p@}\item[]}
  550. \let\endquotation=\endlist
  551.  
  552. % QUOTE -- same as quotation except no paragraph indentation,
  553. %
  554. \def\quote{\par\list{}{\ssp\rightmargin\leftmargin}\item[]}
  555. \let\endquote=\endlist
  556.  
  557. % DESCRIPTION
  558. %
  559. %  To change the formatting of the label, you must redefine
  560. %  \descriptionlabel.
  561.  
  562. \def\descriptionlabel#1{\hspace\labelsep \bfseries #1}
  563. \def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
  564.        \let\makelabel\descriptionlabel}}
  565.  
  566. \let\enddescription\endlist
  567.  
  568. \newdimen\descriptionmargin
  569. \descriptionmargin=3em
  570.  
  571.  
  572. %    ****************************************
  573. %    *         OTHER ENVIRONMENTS           *
  574. %    ****************************************
  575. %
  576. %
  577. % VERBATIM
  578. %
  579. % standard verbatim mode driver macro is modified to use
  580. % single-spacing.  There appears to be a small problem with extra
  581. % vertical space (1 or 2 points worth) after this environment.
  582. % Probably, this results from returning to double-spacing before
  583. % issuing a \parskip, but I'm not enough of TeX hacker to figure out
  584. % the source of the problem. (EVM, 9/25/94)
  585. % 94/11/03 BBF converted \tt to \ttfamily
  586.  
  587. \def\@verbatim{\trivlist\ssp \item[]\if@minipage\else\vskip\parskip\fi
  588. \leftskip\@totalleftmargin\rightskip\z@
  589. \parindent\z@\parfillskip\@flushglue\parskip\z@
  590. %%RmS 91/08/26 Added \@@par to clear possible \parshape definition
  591. %%from a surrounding list (the verbatim guru says)
  592. \@@par
  593. \@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
  594. \penalty\interlinepenalty}%
  595. \obeylines \ttfamily \catcode``=13 \@noligs \let\do\@makeother \dospecials}
  596.  
  597. % ARRAY AND TABULAR
  598. %
  599.  
  600. \arraycolsep 5pt     % Half the space between columns in an array
  601.                      % environment.
  602. \tabcolsep 6pt       % Half the space between columns in a tabular
  603.                      % environment.
  604. \arrayrulewidth .4pt % Width of rules in array and tabular environment.
  605. \doublerulesep 2pt   % Space between adjacent rules in array or tabular
  606.                      % environment.
  607.  
  608. % We have to redefine array here in order to make it single-spaced.
  609. % (Not sure if this is really necessary.)
  610. \def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
  611.  \let\@classiv\@arrayclassiv \let\\\@arraycr\let\@halignto\@empty\@tabarray}
  612.  
  613. % TABBING
  614. %
  615. \tabbingsep \labelsep   % Space used by the \' command.
  616.                         %  (See LaTeX manual.)
  617.  
  618. % We have to redefine tabular here in order to make it single-spaced.
  619. \def\tabular{\par\ssp\let\@halignto\@empty\@tabular}
  620. \expandafter \def\csname tabular*\endcsname #1%
  621. {\par\ssp\def\@halignto{to#1}\@tabular}
  622.  
  623. % \smalltabular and \smalltabular* are alternative tabular styles
  624. % in the \small font.  They are required because single-spacing implies a 
  625. % change of font to a particular size.
  626. % EVM, 7/20/93 
  627. \def\smalltabular{\par\smallssp\let\@halignto\@empty\@tabular}
  628. \def\endsmalltabular{\endtabular}
  629. \expandafter \def\csname smalltabular*\endcsname #1%
  630. {\par\smallssp\def\@halignto{to#1}\@tabular}
  631. \expandafter \let \csname endsmalltabular*\endcsname = \endtabular
  632.  
  633. % \scriptsizetabular and \scriptsizetabular* are analogs of \smalltabular
  634. \def\scriptsizetabular{\par\scriptsizessp\let\@halignto\@empty\@tabular}
  635. \def\endscriptsizetabular{\endtabular}
  636. \expandafter \def\csname scriptsizetabular*\endcsname #1%
  637. {\par\scriptsizessp\def\@halignto{to#1}\@tabular}
  638. \expandafter \let \csname endscriptsizetabular*\endcsname = \endtabular
  639.  
  640. % MINIPAGE
  641. %  \@minipagerestore is called upon entry to a minipage environment to
  642. %  set up things that are to be handled differently inside a minipage
  643. %  environment. In the current styles, it does nothing.
  644. %
  645. % \skip\@mpfootins : plays same role for footnotes in a minipage as
  646. %                    \skip\footins does for ordinary footnotes
  647.  
  648. \skip\@mpfootins = \skip\footins
  649.  
  650. % FRAMEBOX
  651. %
  652. \fboxsep = 3pt    % Space left between box and text by \fbox and
  653.                   % \framebox.
  654. \fboxrule = .4pt  % Width of rules in box made by \fbox and \framebox.
  655.  
  656.  
  657. %    ****************************************
  658. %    *        CHAPTERS AND SECTIONS         *
  659. %    ****************************************
  660. %
  661. % DEFINE COUNTERS:
  662. %
  663. % \newcounter{NEWCTR}[OLDCTR] : Defines NEWCTR to be a counter, which is
  664. %                               reset to zero when counter OLDCTR is
  665. %                               stepped.
  666. %                               Counter OLDCTR must already be defined.
  667.  
  668. % Must redefine @startsection so that we always get indentation.
  669. \def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
  670.    \par \@tempskipa #4\relax
  671.    \@afterindenttrue
  672.    \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \relax\fi
  673.    \if@nobreak \everypar{}\else
  674.      \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi \@ifstar
  675.      {\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
  676.  
  677. \newcounter {part}
  678. \newcounter {chapter}
  679. \newcounter {section}[chapter]
  680. \newcounter {subsection}[section]
  681. \newcounter {subsubsection}[subsection]
  682. \newcounter {paragraph}[subsubsection]
  683. \newcounter {subparagraph}[paragraph]
  684.  
  685. % For any counter CTR, \theCTR is a macro that defines the printed
  686. % version of counter CTR.  It is defined in terms of the following
  687. % macros:
  688. %
  689. %  \arabic{COUNTER} : The value of COUNTER printed as an arabic numeral.
  690. %  \roman{COUNTER}  : Its value printed as a lower-case roman numberal.
  691. %  \Roman{COUNTER}  : Its value printed as an upper-case roman numberal.
  692. %  \alph{COUNTER}   : Value of COUNTER printed as a lower-case letter:
  693. %                         1 = a, 2 = b, etc.
  694. %  \Alph{COUNTER}   : Value of COUNTER printed as an upper-case letter:
  695. %                           1 = A, 2 = B, etc.
  696. %
  697.  
  698. \def\thepart          {\Roman{part}}
  699. \def\thechapter       {\arabic{chapter}}
  700. \def\thesection       {\thechapter.\arabic{section}}
  701. \def\thesubsection    {\thesection.\arabic{subsection}}
  702. \def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
  703. \def\theparagraph     {\thesubsubsection.\arabic{paragraph}}
  704. \def\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
  705.  
  706. % \@chapapp is initially defined to be '\chaptername'.  The \appendix
  707. % command redefines it to be '\appendixname'.
  708. %
  709. \def\@chapapp{\chaptername}
  710.  
  711. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  712. %                        PART                          %
  713. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  714.  
  715. \def\part{\cleardoublepage   % Starts new page.
  716.    \thispagestyle{plain}%    % Page style of part page is 'plain'
  717.   \if@twocolumn              % IF two-column style
  718.      \onecolumn              %  THEN \onecolumn
  719.      \@tempswatrue           %       @tempswa := true
  720.     \else \@tempswafalse     %  ELSE @tempswa := false
  721.   \fi                        % FI
  722.   \hbox{}\vfil               % Add fil glue to center title
  723. %%  \bgroup  \centering      % BEGIN centering %% Removed 19 Jan 88
  724.   \secdef\@part\@spart}
  725.  
  726. \def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax  % IF secnumdepth > -2
  727.         \refstepcounter{part}%                    %   THEN step
  728.                                                   %         part counter
  729.         \addcontentsline{toc}{part}{\thepart      %        add toc line
  730.         \hspace{1em}#1}\else                      %   ELSE add
  731.                                                   %         unnumb. line
  732.         \addcontentsline{toc}{part}{#1}\fi        % FI
  733.    \markboth{}{}%
  734.    {\centering                       % %% added 19 Jan 88
  735.     \interlinepenalty \@M            %% RmS added 11 Nov 91
  736.     \ifnum \c@secnumdepth >-2\relax  % IF secnumdepth > -2
  737.       \huge\bfseries \partname~\thepart    %   THEN Print '\partname' and
  738.     \par                             %         number in \huge bold.
  739.     \vskip 20\p@\fi                  %        Add space before title.
  740.     \Huge \bfseries                        % FI
  741.     #2\par}\@endpart}                % Print Title in \Huge bold.
  742.                                      % Bug Fix 13 Nov 89: #1 -> #2
  743.  
  744.  
  745. % \@endpart finishes the part page
  746. %
  747. \def\@endpart{\vfil\newpage   % End page with 1fil glue.
  748.    \if@twoside                % IF twoside printing
  749.        \hbox{}%               %   THEN Produce totally blank page
  750.        \thispagestyle{empty}%
  751.        \newpage
  752.    \fi                        % FI
  753.    \if@tempswa                % IF @tempswa = true
  754.      \twocolumn               %   THEN \twocolumn
  755.    \fi}                       % FI
  756.  
  757. \def\@spart#1{{\centering      % %% added 19 Jan 88
  758.    \interlinepenalty \@M       %% RmS added 11 Nov 91
  759.    \Huge \bfseries                   % Print title in \Huge boldface
  760.    #1\par}\@endpart}
  761.  
  762.  
  763.  
  764.  
  765.  
  766. %    ****************************************
  767. %    *         TABLE OF CONTENTS, ETC.      *
  768. %    ****************************************
  769. %
  770. % A \subsection command writes a
  771. %       \contentsline{subsection}{TITLE}{PAGE}
  772. % command on the .toc file, where TITLE contains the contents of the
  773. % entry and PAGE is the page number.  If subsections are being numbered,
  774. % then TITLE will be of the form
  775. %       \numberline{NUM}{HEADING}
  776. % where NUM is the number produced by \thesubsection.  Other sectioning
  777. % commands work similarly.
  778. %
  779. % A \caption command in a 'figure' environment writes
  780. %    \contentsline{figure}{\numberline{NUM}{CAPTION}}{PAGE}
  781. % on the .lof file, where NUM is the number produced by \thefigure and
  782. % CAPTION is the figure caption.  It works similarly for a 'table'
  783. % environment.
  784. %
  785. % The command \contentsline{NAME} expands to \l@NAME.  So, to specify
  786. % the table of contents, we must define \l@chapter, \l@section,
  787. % \l@subsection, ... ; to specify the list of figures, we must define
  788. % \l@figure; and so on.  Most of these can be defined with the
  789. % \@dottedtocline command, which works as follows.
  790. %
  791. % \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE}
  792. %    LEVEL    : An entry is produced only if LEVEL < or = value of
  793. %               'tocdepth' counter.  Note, \chapter is level 0, \section
  794. %               is level 1, etc.
  795. %    INDENT   : The indentation from the outer left margin of the start
  796. %               of the contents line.
  797. %    NUMWIDTH : The width of a box in which the section number is to go,
  798. %               if TITLE includes a \numberline command.
  799. %
  800. % This command uses the following three parameters, which are set
  801. % with a \def (so em's can be used to make them depend upon the font).
  802. %   \@pnumwidth : The width of a box in which the page number is put.
  803. %   \@tocrmarg  : The right margin for multiple line entries.  One
  804. %                 wants \@tocrmarg > or = \@pnumwidth
  805. %   \@dotsep    : Separation between dots, in mu units.  Should be
  806. %                 \def'd to a number like 2 or 1.7
  807.  
  808. \def\@pnumwidth{1.55em}
  809. \def\@tocrmarg {2.55em}
  810. \def\@dotsep{4.5}
  811. \setcounter{tocdepth}{2}
  812.  
  813.  
  814. % TABLEOFCONTENTS
  815. %  In ucthesis style, \tableofcontents, \listoffigures, etc. are always
  816. %  set in single-column style.  @restonecol
  817.  
  818. \def\tableofcontents{\@restonecolfalse
  819.   \if@twocolumn\@restonecoltrue\onecolumn\fi
  820.   \chapter*{\contentsname
  821.         \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
  822.   {\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}
  823.  
  824. \def\l@part#1#2{\addpenalty{-\@highpenalty}%
  825.    \addvspace{2.25em plus\p@}% space above part line
  826.    \begingroup
  827.    \@tempdima 3em         % width of box holding part number, used by
  828.      \parindent \z@ \rightskip \@pnumwidth             %% \numberline
  829.      \parfillskip -\@pnumwidth
  830.      {\large \bfseries          % set line in \large boldface
  831.      \leavevmode          % TeX command to enter horizontal mode.
  832.      #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
  833.      \nobreak             % Never break after part entry
  834.     \global\@nobreaktrue                        %% Added 24 May 89 as
  835.     \everypar{\global\@nobreakfalse\everypar{}}%% suggested by
  836.                                                %% Jerry Leichter
  837.    \endgroup}
  838.  
  839. %% First line of l@chapter changed 24 May 89, as suggested
  840. %% by Jerry Leichter.
  841. %%
  842. \def\l@chapter#1#2{\addpenalty{-\@highpenalty}%
  843.    \vskip 1.0em plus\p@   % space above chapter line
  844.    \@tempdima 1.5em       % width of box holding chapter number
  845.    \begingroup
  846.      \parindent \z@ \rightskip \@pnumwidth
  847.      \parfillskip -\@pnumwidth
  848.      \bfseries                  % Boldface.
  849.      \leavevmode          % TeX command to enter horizontal mode.
  850.       \advance\leftskip\@tempdima  %% added 5 Feb 88 to conform to
  851.       \hskip -\leftskip            %% 25 Jan 88 change to \numberline
  852.      #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
  853.      \penalty\@highpenalty %% added 24 May 89, suggested by J. Leichter
  854.    \endgroup}
  855.  
  856. \def\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
  857. \def\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
  858. \def\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
  859. \def\l@paragraph{\@dottedtocline{4}{10em}{5em}}
  860. \def\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
  861.  
  862. % LIST OF FIGURES
  863. %
  864. % Single-space list of figures, add it to the table of contents.
  865. \def\listoffigures{\@restonecolfalse
  866.   \if@twocolumn\@restonecoltrue\onecolumn\fi
  867.   \chapter*{\listfigurename\@mkboth{\uppercase{\listfigurename}}%
  868. {\uppercase{\listfigurename}}}
  869.    \addcontentsline{toc}{chapter}{\listfigurename}
  870.    {\ssp\@starttoc{lof}}\if@restonecol
  871.     \twocolumn\fi}
  872.  
  873. \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
  874.  
  875. % LIST OF TABLES
  876. %
  877. \def\listoftables{\@restonecolfalse
  878.   \if@twocolumn\@restonecoltrue\onecolumn\fi
  879.   \chapter*{\listtablename\@mkboth{\uppercase{\listtablename}}%
  880.    {\uppercase{\listtablename}}}\@starttoc{lot}\if@restonecol
  881.   \twocolumn\fi}
  882. \def\listoftables{\@restonecolfalse
  883.   \if@twocolumn\@restonecoltrue\onecolumn\fi
  884.   \chapter*{\listtablename\@mkboth{\uppercase{\listtablename}}%
  885. {\uppercase{\listtablename}}}
  886.    \addcontentsline{toc}{chapter}{\listtablename}
  887.    {\ssp\@starttoc{lot}}\if@restonecol
  888.   \twocolumn\fi}
  889.  
  890.  
  891. \let\l@table\l@figure
  892.  
  893.  
  894.  
  895. %    ****************************************
  896. %    *             BIBLIOGRAPHY             *
  897. %    ****************************************
  898. %
  899. % The thebibliography environment executes the following commands:
  900. %
  901. %  \def\newblock{\hskip .11em plus .33em minus .07em} --
  902. %      Defines the `closed' format, where the blocks (major units of
  903. %      information) of an entry run together.
  904. %
  905. %  \sloppy  -- Used because it's rather hard to do line breaks in
  906. %      bibliographies,
  907. %
  908. %  \sfcode`\.=1000\relax --
  909. %      Causes a `.' (period) not toproduce an end-of-sentence space.
  910.  
  911. %% RmS 91/10/27 [ .. ] replaced by \@biblabel{ .. }
  912. %% RmS 91/11/13: Changed counter enumi to enumiv,
  913. %%               as it says in the comment in latex.tex
  914. %% RmS 92/01/14: Set \p@enumiv to {} and \theenumiv to \arabic{enumiv}
  915. %%               to get correct references
  916. \def\thebibliography#1{\chapter*{\bibname\@mkboth
  917.   {\uppercase{\bibname}}{\uppercase{\bibname}}}
  918.   \addcontentsline{toc}{chapter}{\bibname}
  919.   \list{\@biblabel{\arabic{enumiv}}}{\settowidth\labelwidth{\@biblabel{#1}}%
  920.     \leftmargin\labelwidth
  921.     \advance\leftmargin\labelsep
  922.     \usecounter{enumiv}%
  923.     \let\p@enumiv\@empty
  924.     \def\theenumiv{\arabic{enumiv}}}%
  925.     \def\newblock{\hskip .11em plus.33em minus.07em}%
  926.     \sloppy\clubpenalty4000\widowpenalty4000
  927.     \sfcode`\.=\@m}
  928.  
  929.  
  930. %% 91/08/26 FMI & RmS: introduced warning instead of error
  931.  
  932. \def\endthebibliography{%
  933.   \def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
  934.   \endlist}
  935.  
  936.  
  937. % \def\@biblabel#1{[#1]\hfill}  % Produces the label for a \bibitem[...]
  938.                                 % command.
  939. % \def\@cite#1{[#1]}            % Produces the output of the \cite
  940.                                 % command.
  941.  
  942.  
  943.  
  944. %    ****************************************
  945. %    *              THE INDEX               *
  946. %    ****************************************
  947. %
  948. % THE THEINDEX ENVIRONMENT
  949. % Produces double column format, with each paragraph a separate entry.
  950. % The user commands \item, \subitem and \subsubitem are used to
  951. % produce the entries, and \indexspace adds an extra vertical space
  952. % that's the right size to put above the first entry with a new letter
  953. % of the alphabet.
  954.  
  955. \newif\if@restonecol
  956.  
  957. \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
  958. \columnseprule \z@
  959. \columnsep 35\p@\twocolumn[\@makeschapterhead{\indexname}]%
  960.     \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}%
  961.     \thispagestyle{plain}\parindent\z@
  962.     \parskip\z@ plus .3\p@\relax\let\item\@idxitem}
  963.  
  964. \def\@idxitem{\par\hangindent 40\p@}
  965.  
  966. \def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
  967.  
  968. \def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
  969.  
  970. \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
  971.  
  972. \def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}
  973.  
  974.  
  975. %    ****************************************
  976. %    *             FOOTNOTES                *
  977. %    ****************************************
  978. %
  979. % \footnoterule is a macro to draw the rule separating the footnotes
  980. % from the text.  It should take zero vertical space, so it needs a
  981. % negative skip to compensate for any positive space taken by the rule.
  982. % (See PLAIN.TEX.)
  983.  
  984. \def\footnoterule{\kern-3\p@
  985.   \hrule width .4\columnwidth
  986.   \kern 2.6\p@}                 % The \hrule has default height of .4pt.
  987.  
  988. % \newcounter{footnote}
  989. \@addtoreset{footnote}{chapter}  % Numbers footnotes within chapters
  990.  
  991. %   \@makefntext{NOTE} :
  992. %        Must produce the actual footnote, using \@thefnmark as the mark
  993. %        of the footnote and NOTE as the text.  It is called when
  994. %        effectively inside a \parbox of width \columnwidth (i.e., with
  995. %        \hsize = \columnwidth).
  996. %
  997. %        The following macro indents all lines of the footnote by 10pt,
  998. %        and indents the first line of a new paragraph by 1em.  To
  999. %        change these dimensions, just substitute the desired value for
  1000. %        '10pt' [in both places] or '1em'.  The mark is flushright
  1001. %        against the footnote.
  1002. %          \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
  1003. %             \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par
  1004. %             \parindent 1em\noindent
  1005. %             \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
  1006. %
  1007. %        A simpler macro is used, in which the footnote text is
  1008. %        set like an ordinary text paragraph, with no indentation except
  1009. %        on the first line of a paragraph, and the first line of the
  1010. %        footnote.  Thus, all the macro must do is set \parindent
  1011. %        to the appropriate value for succeeding paragraphs and put the
  1012. %        proper indentation before mark.
  1013.  
  1014. \long\def\@makefntext#1{\parindent 1em\noindent
  1015.             \hbox to 1.8em{\hss$\m@th^{\@thefnmark}$}#1}
  1016.  
  1017. % \@makefnmark : A macro to generate the footnote marker that goes
  1018. %    in the text.  Default used.
  1019. %
  1020.  
  1021.  
  1022. % Single-space footnotes.
  1023. \long\def\@footnotetext#1{\insert\footins{\ssp\reset@font\footnotesize
  1024.     \interlinepenalty\interfootnotelinepenalty
  1025.     \splittopskip\footnotesep
  1026.     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
  1027.     \hsize\columnwidth \@parboxrestore
  1028.    \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
  1029.     {\rule{\z@}{\footnotesep}\ignorespaces
  1030.       #1\strut}}}
  1031.  
  1032. %    ****************************************
  1033. %    *         FIGURES AND TABLES           *
  1034. %    ****************************************
  1035. %
  1036. % Float placement parameters.  See LaTeX manual for their definition.
  1037. %
  1038. \setcounter{topnumber}{2}
  1039. \def\topfraction{.7}
  1040. \setcounter{bottomnumber}{1}
  1041. \def\bottomfraction{.3}
  1042. \setcounter{totalnumber}{3}
  1043. \def\textfraction{.2}
  1044. \def\floatpagefraction{.5}
  1045. \setcounter{dbltopnumber}{2}
  1046. \def\dbltopfraction{.7}
  1047. \def\dblfloatpagefraction{.5}
  1048.  
  1049. % \@makecaption{NUMBER}{TEXT} : Macro to make a figure or table caption.
  1050. %      NUMBER : Figure or table number--e.g., 'Figure 3.2'
  1051. %      TEXT   : The caption text.
  1052. %  Macro should be called inside a \parbox of right width, with
  1053. %  \normalsize.
  1054. % changed 25 Jun 86 to fix according to Howard Trickey:
  1055. % instead of \unhbox\@tempboxa\par we do #1: #2\par
  1056.  
  1057. % 15 Nov 93: further changes to support captions BEFORE the figure
  1058. % or table.  Changes suggested by Donald Arseneau, installed by Ethan
  1059. % Munson.  Detailed reasons are:
  1060. %    The \unhbox allows \vadjust material (\vspace) to get out;
  1061. %    the \vbox to\topskip{} is for captions at the top of top-floats;
  1062. %    the \ifdim is for captions above the figure or table;
  1063. %    the strut is for tables below the caption.
  1064.  
  1065. \long\def\@makecaption#1#2{% Add space only if something is ...
  1066.    \par\ifdim\prevdepth>-\p@ \vskip 10\p@\relax \fi % above the caption
  1067.    \setbox\@tempboxa\hbox{\vbox to\topskip{}#1: #2\unskip\strut}% 
  1068.    \ifdim \wd\@tempboxa >\hsize      % IF longer than one line:
  1069.        {\ssp#1: #2\unskip\strut\par} %   THEN set as ordinary paragraph.
  1070.      \else                           %   ELSE  center.
  1071.        \hbox to\hsize{\hfil\unhbox\@tempboxa\hfil}%
  1072.    \fi}
  1073.  
  1074. % To define a float of type TYPE (e.g., TYPE = figure), the document
  1075. % style must define the following.
  1076. %
  1077. %  \fps@TYPE   : The default placement specifier for floats of type
  1078. %                TYPE.
  1079. %
  1080. % \ftype@TYPE : The type number for floats of type TYPE.  Each TYPE
  1081. %                has associated a unique positive TYPE NUMBER, which
  1082. %                is a power of two.  E.g., figures might have type
  1083. %                number 1, tables type number 2, programs type number
  1084. %                4, etc.
  1085. %
  1086. % \ext@TYPE : The file extension indicating the file on which the
  1087. %                contents list for float type TYPE is stored.  For
  1088. %                example, \ext@figure = 'lof'.
  1089. %
  1090. %  \fnum@TYPE  : A macro to generate the figure number for a caption.
  1091. %                For example, \fnum@TYPE == Figure \thefigure.
  1092. %
  1093. %  The actual float-making environment commands--e.g., the commands
  1094. %  \figure and \endfigure--are defined in terms of the macros \@float
  1095. %  and \end@float, which are described below.
  1096. %
  1097. % \@float{TYPE}[PLACEMENT] : Macro to begin a float environment for a
  1098. %     single-column float of type TYPE with PLACEMENT as the placement
  1099. %     specifier.  The default value of PLACEMENT is defined by
  1100. %     \fps@TYPE.  The environment is ended by \end@float.  E.g.,
  1101. %     \figure == \@float{figure}, \endfigure == \end@float.
  1102.  
  1103.  
  1104. % FIGURE
  1105.  
  1106. \newcounter{figure}[chapter]
  1107. \def\thefigure{\thechapter.\@arabic\c@figure}
  1108.  
  1109. \def\fps@figure{tbp}
  1110. \def\ftype@figure{1}
  1111. \def\ext@figure{lof}
  1112. \def\fnum@figure{\figurename~\thefigure}
  1113. \def\figure{\@float{figure}}
  1114. \let\endfigure\end@float
  1115. \@namedef{figure*}{\@dblfloat{figure}}
  1116. \@namedef{endfigure*}{\end@dblfloat}
  1117.  
  1118. % TABLE
  1119. %
  1120. \newcounter{table}[chapter]
  1121. \def\thetable{\thechapter.\@arabic\c@table}
  1122.  
  1123. \def\fps@table{tbp}
  1124. \def\ftype@table{2}
  1125. \def\ext@table{lot}
  1126. \def\fnum@table{\tablename~\thetable}
  1127. \def\table{\@float{table}}
  1128. \let\endtable\end@float
  1129. \@namedef{table*}{\@dblfloat{table}}
  1130. \@namedef{endtable*}{\end@dblfloat}
  1131.  
  1132.  
  1133. %    ****************************************
  1134. %    *            PAGE STYLES               *
  1135. %    ****************************************
  1136. %
  1137. % The page style 'foo' is defined by defining the command \ps@foo.  This
  1138. % command should make only local definitions.  There should be no stray
  1139. % spaces in the definition, since they could lead to mysterious extra
  1140. % spaces in the output.
  1141. %
  1142. % The \ps@... command defines the macros \@oddhead, \@oddfoot,
  1143. % \@evenhead, and \@evenfoot to define the running heads and
  1144. % feet---e.g., \@oddhead is the macro to produce the contents of the
  1145. % heading box for odd-numbered pages.  It is called inside an \hbox of
  1146. % width \textwidth.
  1147. %
  1148. % To make headings determined by the sectioning commands, the page style
  1149. % defines the commands \chaptermark, \sectionmark, ... , where
  1150. % \chaptermark{TEXT} is called by \chapter to set a mark, and so on.
  1151. % The \...mark commands and the \...head macros are defined with the
  1152. % help of the following macros.  (All the \...mark commands should be
  1153. % initialized to no-ops.)
  1154. %
  1155. % MARKING CONVENTIONS:
  1156. % LaTeX extends TeX's \mark facility by producing two kinds of marks
  1157. % a 'left' and a 'right' mark, using the following commands:
  1158. %     \markboth{LEFT}{RIGHT} : Adds both marks.
  1159. %     \markright{RIGHT}      : Adds a 'right' mark.
  1160. %     \leftmark  : Used in the \@oddhead, \@oddfoot, \@evenhead or
  1161. %                  \@evenfoot macro, gets the current 'left' mark.
  1162. %                  Works like TeX's \botmark command.
  1163. %     \rightmark : Used in the \@oddhead, \@oddfoot, \@evenhead or
  1164. %                  \@evenfoot macro, gets the current 'right' mark.
  1165. %                  Works like TeX's \firstmark command.
  1166. % The marking commands work reasonably well for right marks 'numbered
  1167. % within' left marks--e.g., the left mark is changed by a \chapter
  1168. % command and the right mark is changed by a \section command.  However,
  1169. % it does produce somewhat anomalous results if two \bothmark's occur on
  1170. % the same page.
  1171. %
  1172. %
  1173. % Commands like \tableofcontents that should set the marks in some
  1174. % page styles use a \@mkboth command, which is \let by the pagestyle
  1175. % command (\ps@...)  to \markboth for setting the heading or
  1176. % \@gobbletwo to do nothing.
  1177.  
  1178. \mark{{}{}}   % Initializes TeX's marks
  1179.  
  1180. % \ps@empty defined in LATEX.TEX
  1181.  
  1182. % Definition of 'headings' page style
  1183. %  Note the use of ##1 for parameter of \def\chaptermark inside the
  1184. %  \def\ps@headings.
  1185. %
  1186. % 91/03/26 FMi: Added extra set of braces arround |\sl| in |\@oddhead|
  1187. % to support NFSS (|\sl| is a shape |\rm| a family). Also remove
  1188. % unnecessary |\hbox{}| commands.
  1189. %
  1190. % 94/11/3 BBF: Eliminated two letter font selection commands \rm and \sl
  1191. % in favor of \rmfamily and \slshape.
  1192. %
  1193.  
  1194. \if@twoside         % If two-sided printing.
  1195. \def\ps@headings{\let\@mkboth\markboth
  1196.  \def\@oddfoot{}\def\@evenfoot{}%       No feet.
  1197.  \def\@evenhead{\rmfamily \thepage\hfil \slshape \leftmark}%    Left heading.
  1198.  \def\@oddhead{{\slshape \rightmark}\hfil \rmfamily\thepage}% Right heading.
  1199.  \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  1200.       \@chapapp\ \thechapter. \ \fi ##1}}{}}%
  1201.  \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  1202.    \thesection. \ \fi ##1}}}}
  1203. \else               % If one-sided printing.
  1204. \def\ps@headings{\let\@mkboth\markboth
  1205. \def\@oddfoot{}\def\@evenfoot{}%     No feet.
  1206. \def\@oddhead{{\slshape \rightmark}\hfil \rmfamily\thepage}% Heading.
  1207. \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  1208.   \@chapapp\ \thechapter. \ \fi ##1}}}}
  1209. \fi
  1210.  
  1211. % Definition of 'myheadings' page style.
  1212. %
  1213. \def\ps@myheadings{\let\@mkboth\@gobbletwo
  1214.  \def\@oddhead{{\slshape\rightmark}\hfil \rmfamily\thepage}%
  1215.  \def\@oddfoot{}\def\@evenhead{\rmfamily \thepage\hfil\slshape\leftmark}%
  1216.  \def\@evenfoot{}\def\chaptermark##1{}\def\sectionmark##1{}%
  1217.  \def\subsectionmark##1{}}
  1218.  
  1219. % Definition of 'plain' page style.
  1220. %
  1221. \def\ps@plain{\let\@mkboth\markboth
  1222. \def\@oddfoot{}\def\@evenfoot{}                % no feet
  1223. \def\@oddhead{\hbox{}\hfil\rmfamily\thepage}        % heading (right)
  1224. \def\@evenhead{\rmfamily\thepage\hfil\hbox{}}}        % heading (left)
  1225.  
  1226.  
  1227.  
  1228. %    ****************************************
  1229. %    *            MISCELLANEOUS             *
  1230. %    ****************************************
  1231. %
  1232. % DATE
  1233. %
  1234. \def\today{\ifcase\month\or
  1235.   January\or February\or March\or April\or May\or June\or
  1236.   July\or August\or September\or October\or November\or December\fi
  1237.   \space\number\day, \number\year}
  1238.  
  1239. % EQUATION and EQNARRAY -- put here because it must follow \chapter
  1240. % definition
  1241. %
  1242. % \newcounter{equation}
  1243. %
  1244. \@addtoreset{equation}{chapter}   % Makes \chapter reset 'equation'
  1245.                                   % counter.
  1246.  
  1247. \def\theequation{\thechapter.\arabic{equation}}
  1248.  
  1249. % \jot = 3pt      % Extra space added between lines of an eqnarray
  1250.                   % environment
  1251.  
  1252. % The macro \@eqnnum defines how equation numbers are to appear in
  1253. % equations.
  1254. %
  1255. % \def\@eqnnum{(\theequation)}
  1256. %
  1257.  
  1258.  
  1259. %    ****************************************
  1260. %    *           INITIALIZATION             *
  1261. %    ****************************************
  1262. %
  1263. % Default initializations
  1264.  
  1265. \ps@plain                   % 'plain' page style
  1266. \pagenumbering{arabic}      % Arabic page numbers
  1267. \if@twoside\else\raggedbottom\fi % Ragged bottom unless twoside
  1268.                                  % option.
  1269. \if@twocolumn
  1270.  \@@input twocolum.sty\relax
  1271. \else
  1272.  \onecolumn                 % Single-column.
  1273. \fi
  1274.  
  1275. \endinput
  1276.